package com.elite;

import org.springframework.core.DefaultParameterNameDiscoverer;
import org.springframework.core.MethodParameter;
import org.springframework.core.ParameterNameDiscoverer;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.util.Arrays;

/**
 * 测试获取方法参数名
 */
public class Test {
    public static void main(String[] args) throws NoSuchMethodException {





        Method method = Test.class.getMethod("dome",String.class,Integer.class);
        int parameterCount = method.getParameterCount();
        Parameter[] parameters = method.getParameters();

        // 打印输出：
        System.out.println("方法参数总数：" + parameterCount);
        Arrays.stream(parameters).forEach(p -> System.out.println(p.getType() + "----" + p.getName()));


        MethodParameter nameParameter1 = new MethodParameter(method, 0);

        MethodParameter nameParameter2 = new MethodParameter(method, 1);

        ParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer();

        nameParameter1.initParameterNameDiscovery(parameterNameDiscoverer);
        nameParameter2.initParameterNameDiscovery(parameterNameDiscoverer);


        System.out.println(nameParameter1.getParameterType() + "----" + nameParameter1.getParameterName());
        System.out.println(nameParameter2.getParameterType() + "----" + nameParameter2.getParameterName());
        Parameter parameter = nameParameter1.getParameter();


    }

    public void dome(String s1 ,Integer i2){

    }
}
